package hard.加油站;

import java.util.Arrays;

/**
 * @author zhengTao
 * @version 1.0
 * @description: 加油站 :此题要是有解只要保证油之和大于等于耗油之和有，则一定有解
 * @date 2022/11/21 9:54
 */
public class Demo134 {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int gasSum = Arrays.stream(gas).sum();
        int costSum = Arrays.stream(cost).sum();
        //无解
        if(costSum>gasSum){
            return -1;
        }
        int rest=0;  //剩余油量
        int index=0;  //出发位置
        //一定有解
        for (int i = 0; i < gas.length; i++) {
              rest=rest+(gas[i]-cost[i]);
              //证明从index点出发，一定跑不完一圈，需要修改index位置,重新修改rest的值
              if(rest<0){
                  rest=0;
                  index=i+1;
              }
        }
        return index;
    }
}
